#ifndef FD_LIST_H
#define FD_LIST_H
#include <stdbool.h>

typedef struct sfd_list *fd_list;

typedef struct sfd_item *fd_item;

fd_item
fd_item_create(void);

void
fd_item_set_fd(fd_item item, int fd);

int
fd_item_get_fd(fd_item item);

void
fd_item_set_cmd(fd_item item, int cmd);

int
fd_item_get_cmd(fd_item item);

void
fd_item_set_atnd(fd_item item, bool atnd);

bool
fd_item_get_atnd(fd_item item);

void
fd_item_set_recv(fd_item item, bool recv);

bool
fd_item_get_recv(fd_item item);

void
fd_item_set_filename(fd_item item, char* filename);

char*
fd_item_get_filename(fd_item item);

void
fd_item_add_recv_str(fd_item item, char* string, int i);

char*
fd_item_get_recv_str(fd_item item);

void
fd_item_reset_recv_str(fd_item item);

void
fd_item_set_offset(fd_item item, int offset);

int
fd_item_get_offset(fd_item item);

void
fd_item_set_amount(fd_item item, int amount);

int
fd_item_get_amount(fd_item item);

void
fd_item_set_transferred(fd_item item, int transferred);

int
fd_item_get_transferred(fd_item item);

void
fd_item_destroy(fd_item item);

/*Funciones Lista de item*/
fd_list
fd_list_create(void);

void
fd_list_add_fd(fd_list list, int fd);

int
fd_list_get_fd(fd_list list, int n);/*Devuelve el fd*/

void
fd_list_set_cmd(fd_list list, int n, int cmd);

int
fd_list_get_cmd(fd_list list, int n);

void
fd_list_remove(fd_list list, int n);

int
fd_list_search(fd_list list, int fd);

fd_item
fd_list_get_item(fd_list list, int n);

void
fd_list_add_file(fd_list list, int n, char* filename, int offset,\
                 int amount);

char*
fd_list_get_filename(fd_list list, int n);

void
fd_list_set_filename(fd_list list, int n, char* filename);

char*
fd_list_get_recv_str(fd_list list, int n);

void
fd_list_add_recv_str(fd_list list, int n, char* string, int i);

void
fd_list_reset_recv_str(fd_list list, int n);

int
fd_list_get_offset(fd_list list, int n);

void
fd_list_set_offset(fd_list list, int n, int m);

int
fd_list_get_amount(fd_list list, int n);

void
fd_list_set_amount(fd_list list, int n, int m);

int
fd_list_size(fd_list list);

void
fd_list_set_finish(fd_list list, int n, bool b);

bool
fd_list_get_finish(fd_list list, int n);

void
fd_list_set_transferred(fd_list list, int n, int transferred);

int
fd_list_get_transferred(fd_list list, int n);

void
fd_list_set_recv(fd_list list, int n, bool recv);

bool
fd_list_get_recv(fd_list list, int n);

void
fd_list_destroy(fd_list list);

#endif 
